//
//  UITextView+Extension.swift
//  WeiBo
//
//  Created by apple on 16/7/3.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

extension UITextView{
    // 对 textView.attributedText 进行遍历
    /*
    第一个参数: range -- 要遍历的字符串的range
    第二个参数: 选一个默认值
    第三个参数:
    3.1 字典
    3.2 range
    3.3 stop
    */
    
    func getPublishTextString() -> String{
        
        // 定义一个可变的字符串
        var publishString = String()
        
        self.attributedText.enumerateAttributesInRange(NSMakeRange(0, self.attributedText.length), options: []) { (data, range, _) -> Void in
            
            //            print(data)
            //
            //            print(range)
            
            if let attachment = data["NSAttachment"] as?  HMTextAttachment{
                
                //                print("表情")
                //                printLog(attachment.emoticon?.chs)
                //                chs -> HMEotion
                
                if let chs = attachment.emoticon?.chs {
                    // 拼接发布表情的文字
                    publishString = publishString + chs
                }
                
                
            } else {
                
                //                print("文字")
                let subString = (self.text as NSString).substringWithRange(range)
                
                publishString = publishString + subString
                //                printLog(subString)
                
            }
            
        }
        
        
        printLog(publishString)

        return publishString
        
        
    }
    
    func insertEmoticon(Oemoticon: HMEmoticon)  {
        
        
        if let _ = Oemoticon.png { // 表情图片
            
            // 应该有之前的表情的
            // NSMutableAttributedString(string: 这个是不可以的,因为不能获取之前的表情
            let muAttribute = NSMutableAttributedString(attributedString: self.attributedText)
            
//            // 1. 创建一个附件对象
//            let attachment = HMTextAttachment()
//            
//            attachment.emoticon = Oemoticon
//            
//            // 1.1 拼接图片路径
//            guard let path = Oemoticon.path,png = Oemoticon.png else {
//                return
//            }
//            let imagePath = "\(path)/\(png)"
//            // 1.2 设置他的属性
//            attachment.image = UIImage(named: imagePath)
//            
//            // 1.3 修改图片的bounds
//            // 思考表情的宽高怎么设置?
//            let lineHeght = self.font?.lineHeight
//            
//            attachment.bounds = CGRectMake(0,-5, lineHeght!, lineHeght!)
//            
//            
//            // 2. 创建一个NSAttributeString对象
//            let attribute = NSAttributedString(attachment: attachment)
            
            let attachment = HMTextAttachment()
            // 一定要传递表情
            attachment.emoticon = Oemoticon
            
            let attribute = attachment.getAttributeString(self.font!)
            
            // 3. 拼接
            //                    muAttribute.appendAttributedString(attribute)
            let range = self.selectedRange
            
            if let attribute = attribute {
                
                // 把图片表情替换进去
                muAttribute.replaceCharactersInRange(range, withAttributedString: attribute)
            }
            
            // 3.1 需要改 muAttribute 的属性
            muAttribute.addAttributes([NSFontAttributeName: self.font!], range: NSMakeRange(0, muAttribute.length))
            
            // 赋值
            self.attributedText = muAttribute
            
            // 4 赋值之后,恢复一下光标的位置
            self.selectedRange = NSMakeRange(range.location + 1, 0)
            
            // 第一个时间点
            // 第二个调用代理方法
            self.delegate?.textViewDidChange!(self)
        }
        
        // emoji
        if let emoji = Oemoticon.emoji {
            
            
            self.replaceRange(self.selectedTextRange!, withText: emoji)
            
        }
        
    }
}
